/*
 * FSWUniCEUB - 2008
 * 
 * Este arquivo é de propriedade da Fábrica de Software do UniCEUB
 * 
 * Para mais informações entre em contato com a coordenação do
 * curso de Ciência da Computação da instituição.
 */

package br.uniceub.fsw.indicadores.vo;

import br.uniceub.fsw.indicadores.dao.DimensaoDAO;
import br.uniceub.fsw.indicadores.dao.PeriodicidadeDAO;
import java.util.Date;
import java.text.SimpleDateFormat;

/**
 * Value Object da entidade Indicador do módulo de Indicadores.
 * 
 * Tabela: TB_Indicador
 *
 * @author Marcos Mello Nobrega Soares ra20136178
 */
public class IndicadorVO {
    
    /**
     * Coluna: ID_Indicador
     */
    private Integer idIndicador;
    
    /**
     * Coluna: NO_Indicador
     */
    private String noIndicador;
    
    /**
     * Coluna: DS_Indicador
     */
    private String dsIndicador;
    
    /**
     * Coluna: DS_MetaIndicador
     */
    private String dsMetaIndicador;
    
    /**
     * Coluna: VL_MetaIndicador
     */
    private Float vlMetaIndicador;
    
    /**
     * Coluna: VL_LimiteControleSuperior
     */
    private Float vlLimiteControleSuperior;
    
    /**
     * Coluna: VL_LimiteControleInferior
     */
    private Float vlLimiteControleInferior;
        
    /**
     * Coluna: DT_InicioCalculoIndicador
     */
    private Date dtInicioCalculoIndicador;
    
    /**
     * Coluna: DT_UltimoCalculoIndicador
     */
    private Date dtUltimoCalculoIndicador;
    
    /**
     * Coluna: DT_Criacao
     */
    private Date dtCriacao;
    
    /**
     * Coluna: DT_Validade
     */
    private Date dtValidade;
    
    /**
     * Coluna: DS_FormulaIndicador
     */
    private String dsFormulaIndicador;
    
    /**
     * Coluna: NO_ProcedimentoCalculoIndicador
     */
    private String noProcedimentoCalculoIndicador;
    
    /**
     * Coluna: DS_UnidadeMedidaIndicador
     */
    private String dsUnidadeMedidaIndicador;
    
    /**
     * Coluna: ST_IndicadorManual
     */
    private String stIndicadorManual;
    
    /**
     * Coluna: ST_IndicadorAtivo
     */
    private String stIndicadorAtivo;
    
    /**
     * Tabela referenciada: TT_Dimensao
     * Coluna FK: CD_Dimensao
     */
    private Integer cdDimensao;
    
    /**
     * Tabela referenciada: TT_Periodicidade
     * Coluna FK: CD_Periodicidade
     */
    private Integer cdPeriodicidade;
    
    /**
     * Dimensao relacionado pela coluna cdDimensao.
     */
    private DimensaoVO dimensao;
    
    /**
     * Periodicidade relacionado pela coluna cdPeriodicidade.
     */
    private PeriodicidadeVO periodicidade;

    /*
     * Getters e Setters.
     */    

    public Integer getCdDimensao() {
        return cdDimensao;
    }

    public void setCdDimensao(Integer cdDimensao) {
        this.cdDimensao = cdDimensao;
    }
    
    public Integer getCdPeriodicidade() {
        return cdPeriodicidade;
    }

    public void setCdPeriodicidade(Integer cdPeriodicidade) {
        this.cdPeriodicidade = cdPeriodicidade;
    }

    public String getDsIndicador() {
        return dsIndicador;
    }

    public void setDsIndicador(String dsIndicador) {
        this.dsIndicador = dsIndicador;
    }

    public Integer getIdIndicador() {
        return idIndicador;
    }

    public void setIdIndicador(Integer idIndicador) {
        this.idIndicador = idIndicador;
    }

    public String getNoIndicador() {
        return noIndicador;
    }

    public void setNoIndicador(String noIndicador) {
        this.noIndicador = noIndicador;
    }

    public String getDsFormulaIndicador() {
        return dsFormulaIndicador;
    }

    public void setDsFormulaIndicador(String dsFormulaIndicador) {
        this.dsFormulaIndicador = dsFormulaIndicador;
    }

    public String getDsMetaIndicador() {
        return dsMetaIndicador;
    }

    public void setDsMetaIndicador(String dsMetaIndicador) {
        this.dsMetaIndicador = dsMetaIndicador;
    }

    public String getDsUnidadeMedidaIndicador() {
        return dsUnidadeMedidaIndicador;
    }

    public void setDsUnidadeMedidaIndicador(String dsUnidadeMedidaIndicador) {
        this.dsUnidadeMedidaIndicador = dsUnidadeMedidaIndicador;
    }

    public Date getDtCriacao() {
        return dtCriacao;
    }
    
    /**
     * Retorna data como String no formato d-m-Y
     * 
     * @param Date
     * @return Data em String d-m-Y
     */
    public static String getDateAsString(Date data) {
        String sdata = new String();
  
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

        if(data != null) 
            sdata = sdf.format(data);
        
        return sdata;
    }
    
    public String getDtCriacaoString() {
        return getDateAsString(this.dtCriacao);
    }

    public void setDtCriacao(Date dtCriacao) {
        this.dtCriacao = dtCriacao;
    }

    public Date getDtInicioCalculoIndicador() {
        return dtInicioCalculoIndicador;
    }

    public String getDtInicioCalculoIndicadorString() {
        return getDateAsString(this.dtInicioCalculoIndicador);
    }

    public void setDtInicioCalculoIndicador(Date dtInicioCalculoIndicador) {
        this.dtInicioCalculoIndicador = dtInicioCalculoIndicador;
    }

    public Date getDtUltimoCalculoIndicador() {
        return dtUltimoCalculoIndicador;
    }

    public String getDtUltimoCalculoIndicadorString() {
        return getDateAsString(this.dtUltimoCalculoIndicador);
    }

    public void setDtUltimoCalculoIndicador(Date dtUltimoCalculoIndicador) {
        this.dtUltimoCalculoIndicador = dtUltimoCalculoIndicador;
    }

    public Date getDtValidade() {
        return dtValidade;
    }

    public String getDtValidadeString() {
        return getDateAsString(this.dtValidade);
    }
    
    public void setDtValidade(Date dtValidade) {
        this.dtValidade = dtValidade;
    }

    public String getNoProcedimentoCalculoIndicador() {
        return noProcedimentoCalculoIndicador;
    }

    public void setNoProcedimentoCalculoIndicador(String noProcedimentoCalculoIndicador) {
        this.noProcedimentoCalculoIndicador = noProcedimentoCalculoIndicador;
    }

    public String getStIndicadorAtivo() {
        return stIndicadorAtivo;
    }

    public void setStIndicadorAtivo(String stIndicadorAtivo) {
        this.stIndicadorAtivo = stIndicadorAtivo;
    }

    public String getStIndicadorManual() {
        return stIndicadorManual;
    }

    public void setStIndicadorManual(String stIndicadorManual) {
        this.stIndicadorManual = stIndicadorManual;
    }

    public Float getVlLimiteControleInferior() {
        return vlLimiteControleInferior;
    }

    public void setVlLimiteControleInferior(Float vlLimiteControleInferior) {
        this.vlLimiteControleInferior = vlLimiteControleInferior;
    }

    public Float getVlLimiteControleSuperior() {
        return vlLimiteControleSuperior;
    }

    public void setVlLimiteControleSuperior(Float vlLimiteControleSuperior) {
        this.vlLimiteControleSuperior = vlLimiteControleSuperior;
    }

    public Float getVlMetaIndicador() {
        return vlMetaIndicador;
    }

    public void setVlMetaIndicador(Float vlMetaIndicador) {
        this.vlMetaIndicador = vlMetaIndicador;
    }
 
    public void setDimensao(DimensaoVO dimensao) {
        this.dimensao = dimensao;
    }
    
    public DimensaoVO getDimensao() {
        
        if(this.dimensao == null) {
            this.dimensao = new DimensaoDAO().consultarPorId(this.cdDimensao);
        }
        
        return dimensao;
    }    
    
    public PeriodicidadeVO getPeriodicidade() {
        
        if(this.periodicidade  == null) {
            this.periodicidade = new PeriodicidadeDAO().consultarPorId(this.cdPeriodicidade);
        }
        
        return periodicidade;
    }
}
